// 检查一个必填字段是否被修改（包括复选框和单选框）
function checkRequired(elem) {
    if (elem.type == "checkbox" || elem.type=="radio") {
        return getInputsByName(elem.name).numChecked;
    }else {
        return elem.value.length>0 && elem.value != elem.defaultValue;
    }
}

function checkEmail(elem) {
    return elem.value == '' || /^[a-z0-9_+.-]+\@([a-z0-9]+\.)+[a-z0-9]{2,4}$/i.test(elem.value);
}

function getInputsByName(name) {
    var results = [];
    // 追踪被选中元素的数量
    results.numChecked = 0;
    // 找出所有的input元素
    var input = document.getElementsByTagName("input");
    for (var i=0; i<input.length; i++){
        if(input[i].name == true){
            // 保存结果，稍后会返回
            results.push(input[i]);
            // 记录被选中字段的数量
            if (input[i].checked){
                results.numChecked++;
            }
        }
    }
    return results;
}

window.onload = function () {
    // 获得表单并监听提交时间
    document.getElementsByTagName("form")[0].onsubmit = function () {
        // 获取需要检查的input元素
        var elem  = document.getElementById("age");
        // 确保年龄的必填字段已经被选中
        if(!checkRequired(elem)){
            // 否则显示错误并阻止表单提交
            alert("Required field is empty -" + "you must be over 13 to use this site");
            return false;
        }

        var name  = document.getElementById("name");
        // 确保年龄的必填字段已经被选中
        if(!checkRequired(name)){
            // 否则显示错误并阻止表单提交
            alert("Required field is empty -" + "please provide your name");
            return false;
        }

        var email = document.getElementById("email");
        if(!checkEmail(email)){
            alert("Field is not an email address");
        }

    };
};